/*************************************************************************
 * File Name:    Valid_Palindrome.cc
 * Author:       zero91
 * Mail:         jianzhang9102@gmail.com
 * Created Time: Wed 18 Sep 2013 12:07:09 AM CST
 * 
 * Description:  
 *
 | Valid Palindrome
 | Given a string, determine if it is a palindrome, considering only
 | alphanumeric characters and ignoring cases.
 |
 | For example,
 | "A man, a plan, a canal: Panama" is a palindrome.
 | "race a car" is not a palindrome.
 |
 | Note:
 | Have you consider that the string might be empty?
 | This is a good question to ask during an interview.
 |
 | For the purpose of this problem, we define empty string as valid palindrome.
 |
 ************************************************************************/

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

class Solution
{
public:
    bool isPalindrome(string s)
    {
        bool ans = true;
        for (int i = 0, j = s.size() - 1; i < j; ++i, --j) {
            while (i < j && !isalnum(s[i])) ++i;
            while (i < j && !isalnum(s[j])) --j;

            if (i < j && toupper(s[i]) != toupper(s[j])) {
                ans = false;
                break;
            }
        }
        return ans;
    }
};

int 
main(int argc, char *argv[])
{


    return 0;
}
